package com.swanclouds.api;

import com.swanclouds.api.account.AccountService;
import com.swanclouds.api.chassis.ChassisResourceService;
import com.swanclouds.api.event.EventResourceService;
import com.swanclouds.api.managers.ManagerResourceSerice;
import com.swanclouds.api.session.SessionService;
import com.swanclouds.api.systems.SystemResourceService;
import com.swanclouds.api.task.TaskResourceService;
import com.swanclouds.api.updates.UpdateService;
import com.swanclouds.model.identity.Token;

import java.util.Map;

public interface RedfishClient<T extends RedfishClient<T>> {

    T headers(Map<String, String> headers);

    /**
     * Gets the current endpoint of the Identity service
     *
     * @return the endpoint
     */
    String getEndpoint();

    SessionService Sessions();

    SystemResourceService Systems();

    ChassisResourceService Chassis();

    ManagerResourceSerice Managers();

    UpdateService Updates();

    AccountService Accounts();

    TaskResourceService Tasks();

    EventResourceService Events();

    interface OSClientV1 extends RedfishClient<OSClientV1> {


        /**
         * Gets the token that was assigned during authorization
         *
         * @return the authentication token
         */
        Token getToken();

    }
}
